<?php
/*******************************************************************************

    FinalsClub.org is a platform for students and faculty to collaborate
    and share their knowledge with the world.

    Copyright (C) 2009  Andrew Magliozzi
 
    This file is a part of FinalsClub.org.

    FinalsClub.org is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
    To contact FinalsClub.org, send an email to info@finalsclub.org, or
    send mail to Finals Club, c/o Veritas Tutors, 1132 Massachusetts Avenue,
    Cambridge, MA 02138.

*******************************************************************************/

class RatingEvaluator {
	
	public static function rate($class, $type)
	{
		
		$class = new ReflectionClass($class); 
		$table_name = $class->getConstant('TABLE_NAME');
		
		//get averages for ratings
		$connection = Propel::getConnection();
		$query = 'SELECT AVG('.RatingPeer::VALUE.
		') AS average, '.RatingPeer::TYPE_ID.
		' FROM '.RatingPeer::TABLE_NAME.
		' WHERE '.RatingPeer::TYPE.' = \''.$type.'\''.
		' GROUP BY '.RatingPeer::TYPE_ID;
		$statement = $connection->prepare($query);
		$statement->execute();
		
		$averages= $statement->fetchAll();

		
		//insert all averages into the  appropriate table
		foreach($averages as $index => $row)
		{	
			$connection = Propel::getConnection();
			$query = 'UPDATE '.$table_name.
			' SET `rating_avg` = '.$row['average'].
			' WHERE `id` = '.$row['TYPE_ID'];
			
			$statement = $connection->prepare($query);
			$statement->execute();
			
		}
		
		return 'Set averages for '.sizeof($averages).' item(s) in table '.$table_name.' of type '.$type;
	}

}
